如何向 AAD 进行身份验证并使用 PowerShell 将 Graph API 作为本机客户端应用程序调用?
How can I authenticate to AAD and call the Graph API as a Native Client application with PowerShell?
我正在尝试在 Azure Active Directory 上进行一些非常快速的测试,我需要一个工具来快速验证 AAD,并调用 AAD Graph API。
我已经在我的目录中注册了一个 Native Client 应用程序,并且我已经将其设置为具有调用 AAD 图形的适当权限 API。
我想看看我的 AAD 令牌,以及调用后图形 API 的输出。如何使用 PowerShell 快速完成此操作?
PowerShell 允许您将 .NET 程序集直接加载到命令行中。这意味着您可以加载 ADAL (Azure Active Directory Authentication Libraries) 并使用它来真正简化身份验证体验。从 ADAL 获取令牌后,您只需使用 Invoke-RestMethod
cmdlet 即可调用 AAD 图 API.
首先,您需要下载并保存 ADAL 的 .NET dll。下载link可以找到on Nuget.
注:我们这里专门使用ADAL v2
You can extract the contents of the .nupkg with a File Extractor like 7z, WinZip, etc...
从\lib\net45\
中提取内容并将它们复制到您的工作目录中。我将文件放在它们自己的 "ADAL" 文件夹中,以保持独立。
然后您应该能够使用以下内容创建一个新的 PowerShell 脚本:
# Load ADAL
Add-Type -Path ".\ADAL\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
# Output Token and Response from AAD Graph API
$accessToken = ".\Token.txt"
$output = ".\Output.json"
# Application and Tenant Configuration
$clientId = "<AppIDGUID>"
$tenantId = "<TenantID>"
$resourceId = "https://graph.windows.net"
$redirectUri = New-Object system.uri("<ReplyURL>")
$login = "https://login.microsoftonline.com"
# Get an Access Token with ADAL
$authContext = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext ("{0}/{1}" -f $login,$tenantId)
$authenticationResult = $authContext.AcquireToken($resourceId, $clientID, $redirectUri)
($token = $authenticationResult.AccessToken) | Out-File $accessToken
# Call the AAD Graph API
$headers = @{
"Authorization" = ("Bearer {0}" -f $token);
"Content-Type" = "application/json";
}
Invoke-RestMethod -Method Get -Uri ("{0}/{1}/users?api-version=1.6" -f $resourceId, $tenantId) -Headers $headers -OutFile $output
注意:您需要在此脚本中更新 App ID、租户 ID 和回复 URL。我还预先配置了 AAD Graph API 对我租户中 return 用户的调用,但您可以将此 REST 调用更改为任何您想要的。
成功 运行 脚本后,您应该在工作目录中获得 2 个新文件: 一个包含编码的 JSON 访问令牌的文本文件,可以在诸如this,以及一个 JSON 文件,其中包含 AAD 图 API 的响应。
如果有帮助请告诉我!
我正在尝试在 Azure Active Directory 上进行一些非常快速的测试,我需要一个工具来快速验证 AAD,并调用 AAD Graph API。
我已经在我的目录中注册了一个 Native Client 应用程序,并且我已经将其设置为具有调用 AAD 图形的适当权限 API。
我想看看我的 AAD 令牌,以及调用后图形 API 的输出。如何使用 PowerShell 快速完成此操作?
PowerShell 允许您将 .NET 程序集直接加载到命令行中。这意味着您可以加载 ADAL (Azure Active Directory Authentication Libraries) 并使用它来真正简化身份验证体验。从 ADAL 获取令牌后,您只需使用 Invoke-RestMethod
cmdlet 即可调用 AAD 图 API.
首先,您需要下载并保存 ADAL 的 .NET dll。下载link可以找到on Nuget.
注:我们这里专门使用ADAL v2
You can extract the contents of the .nupkg with a File Extractor like 7z, WinZip, etc...
从\lib\net45\
中提取内容并将它们复制到您的工作目录中。我将文件放在它们自己的 "ADAL" 文件夹中,以保持独立。
然后您应该能够使用以下内容创建一个新的 PowerShell 脚本:
# Load ADAL
Add-Type -Path ".\ADAL\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
# Output Token and Response from AAD Graph API
$accessToken = ".\Token.txt"
$output = ".\Output.json"
# Application and Tenant Configuration
$clientId = "<AppIDGUID>"
$tenantId = "<TenantID>"
$resourceId = "https://graph.windows.net"
$redirectUri = New-Object system.uri("<ReplyURL>")
$login = "https://login.microsoftonline.com"
# Get an Access Token with ADAL
$authContext = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext ("{0}/{1}" -f $login,$tenantId)
$authenticationResult = $authContext.AcquireToken($resourceId, $clientID, $redirectUri)
($token = $authenticationResult.AccessToken) | Out-File $accessToken
# Call the AAD Graph API
$headers = @{
"Authorization" = ("Bearer {0}" -f $token);
"Content-Type" = "application/json";
}
Invoke-RestMethod -Method Get -Uri ("{0}/{1}/users?api-version=1.6" -f $resourceId, $tenantId) -Headers $headers -OutFile $output
注意:您需要在此脚本中更新 App ID、租户 ID 和回复 URL。我还预先配置了 AAD Graph API 对我租户中 return 用户的调用,但您可以将此 REST 调用更改为任何您想要的。
成功 运行 脚本后,您应该在工作目录中获得 2 个新文件: 一个包含编码的 JSON 访问令牌的文本文件,可以在诸如this,以及一个 JSON 文件,其中包含 AAD 图 API 的响应。
如果有帮助请告诉我!